Subject: Retry absorption / handling XID commands/responses

From: "Steve Klein (254-5623)" <[email-masked]>
Date: Wed, 7 Sep 94 20:16:25 EDT

It seems that the version 0.12 of the document still lacks text that
states that only one copy of an LPDU is sent between Data Link Switches
and that the retries are managed locally by their respective LLCs.

How does this sound (any comments to improve this are most welcome):

  LPDU Retry Absorption
  ---------------------

  Only one copy of an LPDU is sent between Data Link Switches in SSP
  messages (XIDFRAME and IFRAME).  Retries of the LPDU are absorbed by
  Data Link Switch that receives it.  The Data Link Switch that transmits
  the LPDU contained in an SSP message will perform retries in a manner
  appropriate for the local DLC.  This may involve running a reply timer
  and maintaining a poll retry count.  The length of the timer and the
  number of retries is an implementation choice based on user
  configuration paramenters and the DLC type.

There was also some discussion on the mailer about how to locally
manage commands and responses with respect to XIDs.  Is anyone interested
in having an XID FSM in the document?  If so, how about this:

DLSw XID FSM
------------

XID states:
  reset - Reset: No incoming or outgoing XID responses are pending.
          This is the initial state
  IXp   - Incoming XID Response Pending: An XID command LPDU has been
          sent and the link station is awaiting an XID response LPDU.
  OXp   - Outgoing XID Response Pending: An XID command LPDU has been
          received and the next XID sent by the link station should be
          sent as a response.
  IOXp  - Incoming and Outgoing XID Responses Pending: The link station
          has sent and then received and XID command LPDU.

XID inputs:
  receive DLC_XID - receive a DLC_XID action from DLSw
  receive XID cmd - receive an XID command LPDU
  receive XID rsp - receive an XID response LPDU
  T1 expired - expiration of reply timer

XID actions:
  send DLC_XID - send a DLC_XID event to DLSw
  send XID cmd - send an XID command LPDU
  send XID rsp - send an XID response LPDU
  start T1 - start reply timer (T1)
  decrement PRC - decrement poll retry count

           +---------------------------------------------------------------+
           |                             states                            |
+----------+---------------+---------------+---------------+---------------+
|  Input   |     reset     |      IXp      |      OXp      |      IOXp     |
+----------+---------------+---------------+---------------+---------------+
| receive  | send XID cmd  | ignore        | send XID rsp  | send XID rsp  |
| DLC_XID  | start T1      |               |               |               |
|          | state = IXp   |               | state = reset | state = IXp   |
+----------+---------------+---------------+---------------+---------------+
| receive  | DLC_XID       | DLC_XID       | drop XID cmd  | drop XID cmd  |
| XID cmd  | state = OXp   | state = IOXp  |               |               |
+----------+---------------+---------------+---------------+---------------+
| receive  | drop XID rsp  | DLC_XID       | drop XID rsp  | DLC_XID       |
| XID rsp  |               | state = reset |               | state = OXp   |
+----------+---------------+---------------+---------------+---------------+
| T1       |               | send XID cmd  |               | send XID cmd  |
| expired  |               | start T1      |               | start T1      |
|(see note)|               | decrement PRC |               | decrement PRC |
+----------+---------------+---------------+---------------+---------------+

Note: When T1 expires and poll retry count is zero, send a DLC_ERROR event
      to DLSw.